package com.erlin.common.service;

import com.erlin.common.entity.PageParam;
import com.erlin.common.utils.PageParamUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;

import java.util.List;

/**
 * @author alin
 */
public interface BaseService {
    /**
     * 从请求参数中获取分页参数并设置分页查询, 默认分页值为 pageNo=1, pageSize=50
     */
    default void startPage() {
        PageParam page = PageParamUtil.getPageParam();
        PageHelper.startPage(page.getPageNo(), page.getPageSize(), false);
    }

    /**
     * 设置分页参数
     *
     * @param pageNo
     * @param pageSize
     */
    default void setPage(int pageNo, int pageSize) {
        PageParamUtil.setPageParam(pageNo, pageSize);
    }

    /**
     * 获取pageNo
     *
     * @return
     */
    default int getPageNo() {
        return PageParamUtil.getPageParam().getPageNo();
    }

    /**
     * 获取pageSize
     *
     * @return
     */
    default int getPageSize() {
        return PageParamUtil.getPageParam().getPageSize();
    }

    /**
     * 清空分页参数
     */
    default void clearPage() {
        PageParamUtil.clearPageParam();
    }

    /**
     * 返回分页
     * @param originList
     * @param dealedList
     * @return
     */
    default PageInfo getPageInfo(List originList,List dealedList){
        PageInfo pageInfo = new PageInfo<>(originList);
        if(CollectionUtils.isEmpty(dealedList)){
            return pageInfo;
        }
        PageInfo<Object> result = new PageInfo<>();
        BeanUtils.copyProperties(pageInfo,result);
        result.setList(dealedList);
        return result;
    }

    default PageInfo getPageInfo(List list){
        return getPageInfo(list,null);
    }
}
